<?php

namespace app\usedb\model;

use think\facade\Db;
use think\facade\Request;
use think\Model;
use app\validate\Login;
use think\exception\ValidateException;

class Admin extends Model
{
    protected $pk = 'n';

    protected $table = 'zx_admin';

//    protected $autoWriteTimestamp = 'int';  // 开启自动时间戳 并且 直接规定数据库中使用时间戳字段为 int类型
//    protected $updateTime = 'logintime';


    // 登录验证方法
    public static function Login($params)
    {
        // 去数据库中查询该用户是否存在
        // 条件是用户名和密码
        try {
            // 验证器验证用户名和密码
            validate(Login::class)
                ->batch(true)
                ->check($params);
            // 查询数据库账号是否存在，查询到了代表正确，查不到代表错误
            $check = self::where('user', '=', $params['username'])
                ->where('pwd', '=', md5($params['pwd']))
                ->find();
            if ($check) {
                // 记录登录的ip地址、登录时间、登录次数+1
                $arr = [
                    'ip' => Request::ip(),  // 除了继承基础控制器类，其他类使用think\facade\Request类来获取ip
                    'logintime' => time(),
                    'times' => Db::raw('times + 1')  // Db::raw 使用原生sql语句使时间+1
                ];
                self::update($arr, ['n' => $check['n']]);
                $arr = ['error' => 0, 'msg' => '登录成功', 'check' => $check];
            } else {
                $arr = ['error' => 1, 'msg' => '用户名或密码错误'];
            }
        } catch (ValidateException $e) {
            // 验证反馈信息
            $arr = ['error' => 2, 'msg' => implode('，',$e->getError())];
        } catch (\Exception $e) {
            $arr = ['error' => 3, 'msg' => '系统错误'];
        }
        return $arr;
    }
}